/*
Interlace G-Force Config
Made by Brady
Email: cguy82(at)usa.net
Website: http://www.public.asu.edu/~bdkahn/ 
This is my very first G-Force config, and I'm going to document it as much as possible so others can maybe get ideas from this and create even better configs of their own.
I recommend using a graphing calculator to explore what you can do with the various types of trig (sine, cosine, etc) functions.
That's how I created this config and 2 others for WhiteCap.
I'd like to make this config rotate or spin slowly, but I don't know how to do that with this config. If you have an idea of how I can do that, please email me.
*/

/* This variable controls how many points/lines G-Force draws.
NUM_SAMPLE_BINS gets the value of SNum from your G-Force Preferences file.*/
Stps="NUM_SAMPLE_BINS",
Aspc=1,

/* Controls minimum size of the config which ranges from .4 to .5 
This is only calculated when the config is loaded */
A0=".15", 


/* This changes the object's shape based on the amount of bass */
B0="trnc(6*BASS)/2",

/* Add "- abs(sin(t/4))" to the end of B0 and "- abs(sin(t/2))" to the end of B1 and watch it morph!*/
B1="trnc(6*BASS)/2",

/* Makes the entire object up to 20% bigger depending on bass */
B2=".13 * BASS",

/* All B variables are calculated at the beginning of each frame before the object is drawn */

/* Since s ranges from 0 to 1, we need to scale in this config so it ranges from 0 to 2*PI (about 6.28) so that the entire object can be drawn. */
C0="2*PI*s",

/* Makes sections of shape move up to 20% based on magnitude at a certain point. */
C1=".15*mag(s)",

/* All C variables are calculated for every change in 's' */

/* Scale shape with random # & bass, also rotates the object */
/* Here's an explination of what these X & Y equations do in plain english:
// (Minimum size + Size added based on bass) * sin or cos( (Minimum number of bumps across X or Y axis + Bumps added by amount of bass) * Value ranging from 0 to 2*PI which helps to draw the entire object ) + how much the point/line moves based on the magnitude of the sound at sub section 's'  */

/* **** Modified by Andy...  Having it's mode (ie, "bumps") change based on BASS causes discontinuities that make it look pretty non-fluid)... */

X0="(A0+B2) * cos( 3*C0 )+C1",
Y0="(A0+B2) * sin( 4*C0 )+C1",
//X0="(A0+B2) * cos( (3+B0)*C0 )+C1",
//Y0="(A0+B2) * sin( (4+B1)*C0 )+C1",


/* When there's no sound, that means the object has 3 bumps along the sides of the object and 4 bumps along the top & bottom.
For some reason, if (# of bumps in equation for Y / # of bumps in equation for X) is a fraction that can be reduced, then it will draw a smaller amount of bumps. It's kind of hard to explain why, but here's an example of this happening:
(# of bumps in equation for Y = 8) and (# of bumps in equation for X = 6)
8/6 reduces to 4/3. So the object will only have 3 bumps along the sides of the object and 4 bumps along the top & bottom.
Since the bigger (8/6) fraction's numerator & denominator (top & bottom values) are twice as big as it's reduced counterpart, this means that the object is drawn twice as fast. Therefore, the object can be drawn by just having s go from 0 to PI, and having s go to 2*PI drawn the object twice.
*/

ConB=1,
/* Makes the lines's thickness (in pixels) based on the magnitude of sound sample. The abs function returns the absolute value of the sound sample because allowing LWdt to be less than 0 could create some problems. */
LWdt="8 * abs( mag( s ) ) ^ 1.3 ",  //Maximum thickness is about 15 pixels.
/* Determines what value/intensity of color to use in current color map. This variable accepts values between 0 to 1 inclusive. If a given value is greater than 1, then GF sets it's value to 1. */
Pen="1",
Vers=100

/* Notes:
If you change the values of A0, B2, or C1, make sure that all of their maximum values add up to a number less than one. Otherwise, it can grow bigger than the GF window, and therefore "clip" some of the object.
Take a look at the maximum values of A0,B2 and C1 in this config: .5+.2+.1=.8
*/